package LimitedTimeGame.Day_0209;

/**
 * @author zxc
 * @date 2023/02/09 09:11
 **/

import java.util.Stack;

/**
 * 题目 ：删除一个字符串中所有出现的给定子字符串
 * 题目详述 ：
 * 给你两个字符串s和part，请你对s反复执行以下操作直到 所有子字符串part都被删除：
 * 找到 s中 最左边的子字符串 part，并将它从 s中删除。
 * 请你返回从 s中删除所有 part子字符串以后得到的剩余字符串。
 * 一个 子字符串是一个字符串中连续的字符序列。
 *
 * 提示：
 * 1 <= s.length <= 1000
 * 1 <= part.length <= 1000
 * s 和 part 只包小写英文字母。
 *
 */
public class RemoveOccurrences {
    /**
     * 思路 ：
     * （1）设置一个标志位flag，来判断主串s中是否还存在子串part可以被消除;
     *  ===》 flag，用来判断主串s中是否还存在子串part可以被消除
     * （2）循环遍历主串的首个字符，主串首个字符的取值范围[0,s,length()-part.length];
     * （3）若是所截取的字符串与子串part相等的话，
     *  ===》 即,使得flag == true;（即，使得其继续循环） && 主串s删除第一个与part子字符串相同的，获取删除过后的主串;
     *  && break;（即，遇到第一个与part子字符串相同的字符串后，直接进行下一次判断即可;）
     * （4）最后直接返回 已经被删除过的主串s即可;
     * @param s
     * @param part
     * @return
     */
    public String removeOccurrences(String s, String part) {
        // 1.字符串模拟 ：
        int len = part.length();
        boolean flag = true;
        while(flag){
            flag = false;
            for(int i = 0 ; i <= s.length() - len ; i++){
                if(s.substring(i , i + len).equals(part)){
                    flag = true;
                    s = new String(s.substring(0 , i) + s.substring(i + len , s.length()));
                    System.out.println(s);
                    break;
                }
            }
        }
        return s;
    }
}
